//
//  ZYTabBar.swift
//  weiboZY
//
//  Created by 赵勇 on 16/5/11.
//  Copyright © 2016年 赵勇. All rights reserved.
//

import UIKit

// 继承NSObjectProtocol， 是为了用weak去修饰，防止循环引用
protocol ZYTabBarDelegate: NSObjectProtocol {
    
    func didSelectComposeBtn()
    
}





class ZYTabBar: UITabBar {

    // 代理的回调
    weak var zyTBDelegate: ZYTabBarDelegate?
    
    // 按钮回调闭包
    var composeBtnClosure: (()->())?
    
    // MARK: --撰写按钮懒加载
    private lazy var composeButton: UIButton = {
        let button = UIButton()
        // 添加点击事件
        button.addTarget(self, action: "composeBtnClick", forControlEvents: .TouchUpInside)
        // 设置背景图片
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: .Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: .Highlighted)
        // 设置按钮图片
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: .Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: .Highlighted)
        button.sizeToFit()
        return button
    }()
    
    // 手写代码的形式创建对象
    override init(frame: CGRect) {
        super.init(frame: frame)
        // 添加按钮控件
        setUpUI()
    }

    
    // 使用xib或stroyboard创建视图的时候回执行
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // 添加控件的方法
    private func setUpUI() {
        addSubview(composeButton)
        
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        // 设置撰写按钮的位置
        composeButton.center.x = frame.size.width * 0.5
        composeButton.center.y = frame.size.height * 0.5
   
        
        //计算子视图按钮大小
        let itemWidth = frame.size.width / 5
        var index = 0
       
        // 遍历子视图
        for childView in subviews {
                if childView .isKindOfClass(NSClassFromString("UITabBarButton")!) {
                childView.frame.size.width = itemWidth
                childView.frame.origin.x = itemWidth * CGFloat(index)
                index++
                    if index==2 {
                        index++
                    }
            }
            
        }

    }
    
    
    // MARK: -撰写按钮的点击事件
    // @objc 使用oc动态运行机制
  @objc private func composeBtnClick() {
        
        print("hello")
        // 执行闭包
        composeBtnClosure?()
        // 使用代理对象，调用代理方法
        zyTBDelegate?.didSelectComposeBtn()
    }

}















